From 3a8bffdcd56590b6a3f5d93b3ea28603da375a2e Mon Sep 17 00:00:00 2001 From: robertl Date: Sat, 26 Jul 2008 20:30:36 +0000 Subject: [PATCH] Support for AMOD 3080GL waypoints in NMEA reader. Strengthen NMEA tests. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@3305 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/nmea.c | 14 +++++- gpsbabel/reference/track/amod-cleansed | 17 +++++++ gpsbabel/reference/track/amod-nmea | 24 ++++++++++ gpsbabel/reference/track/amod.gpx | 64 ++++++++++++++++++++++++++ gpsbabel/testo | 10 ++++ 5 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 gpsbabel/reference/track/amod-cleansed create mode 100644 gpsbabel/reference/track/amod-nmea create mode 100644 gpsbabel/reference/track/amod.gpx diff --git a/gpsbabel/nmea.c b/gpsbabel/nmea.c index be751f994..e11b89063 100644 --- a/gpsbabel/nmea.c +++ b/gpsbabel/nmea.c @@ -178,6 +178,7 @@ static char *opt_gisteq; static long sleepus; static int getposn; static int append_output; +static int amod_waypoint; static time_t last_time; static double last_read_time; /* Last timestamp of GGA or PRMC */ @@ -548,7 +549,8 @@ gprmc_parse(char *ibuf) * going from 235959 to 000000. */ nmea_set_waypoint_time(curr_waypt, &tm, microseconds); } - return; + if (!amod_waypoint) + return; } waypt = waypt_new(); @@ -567,6 +569,11 @@ gprmc_parse(char *ibuf) nmea_release_wpt(curr_waypt); curr_waypt = waypt; + + if (amod_waypoint) { + waypt_add(waypt_dupe(waypt)); + amod_waypoint = 0; + } } static void @@ -926,7 +933,10 @@ nmea_parse_one_line(char *ibuf) } else if (opt_gpgsa && (0 == strncmp(tbuf, "$GPGSA,",7))) { gpgsa_parse(tbuf); /* GPS fix */ - } + } else + if (0 == strncmp(tbuf, "$ADPMB,5,0", 10)) { + amod_waypoint = 1; + } if (tbuf != ibuf) { /* clear up the dynamic buffer we used because substition was required */ diff --git a/gpsbabel/reference/track/amod-cleansed b/gpsbabel/reference/track/amod-cleansed new file mode 100644 index 000000000..951b60977 --- /dev/null +++ b/gpsbabel/reference/track/amod-cleansed @@ -0,0 +1,17 @@ +$GPWPL,3549.499,N,08650.824,W,WPT001*31 +$GPWPL,3549.499,N,08650.824,W,WPT002*32 +$GPRMC,200641.000,V,3549.499,N,08650.824,W,0.00,224.45,050608,,*03 +$GPGGA,200641.000,3549.499,N,08650.824,W,0,00,0.0,0.000,M,0.0,M,,*74 +$GPVTG,224.450,T,0,M,0.000,N,0.000,K*55 +$GPRMC,200642.000,A,3549.499,N,08650.824,W,0.00,224.45,050608,,*17 +$GPGGA,200642.000,3549.499,N,08650.824,W,1,07,1.1,269.900,M,0.0,M,,*75 +$GPVTG,224.450,T,0,M,0.000,N,0.000,K*55 +$GPGSA,A,3,,,,,,,,,,,,,2.1,1.1,1.8*38 +$GPRMC,200643.000,A,3549.499,N,08650.824,W,0.00,224.45,050608,,*16 +$GPGGA,200643.000,3549.499,N,08650.824,W,1,07,1.1,269.900,M,0.0,M,,*74 +$GPVTG,224.450,T,0,M,0.000,N,0.000,K*55 +$GPGSA,A,3,,,,,,,,,,,,,2.1,1.1,1.8*38 +$GPRMC,200644.000,A,3549.499,N,08650.824,W,0.00,224.45,050608,,*11 +$GPGGA,200644.000,3549.499,N,08650.824,W,1,06,1.3,269.900,M,0.0,M,,*70 +$GPVTG,224.450,T,0,M,0.000,N,0.000,K*55 +$GPGSA,A,3,,,,,,,,,,,,,2.2,1.3,1.8*39 diff --git a/gpsbabel/reference/track/amod-nmea b/gpsbabel/reference/track/amod-nmea new file mode 100644 index 000000000..df091cf64 --- /dev/null +++ b/gpsbabel/reference/track/amod-nmea @@ -0,0 +1,24 @@ +A simple NMEA file recorded by the AMOD 3080. Note the two ADPMB button +presses that indicate a waypoint. +$GPGSA,A,3,32,31,20,14,30,16,22,,,,,,2.1,1.1,1.8*38 +$ADPMB,5,0 +$GPRMC,200641.000,A,3549.4991,N,08650.8239,W,0.00,224.45,050608,,,A*76 +$GPVTG,224.45,T,,M,0.00,N,0.0,K,A*08 +$GPGGA,200642.000,3549.4991,N,08650.8239,W,1,07,1.1,269.9,M,-31.4,M,,0000*61 +$GPGLL,3549.4991,N,08650.8239,W,200642.000,A,A*4C +$GPGSA,A,3,32,31,20,14,30,16,22,,,,,,2.1,1.1,1.8*38 +$GPRMC,200642.000,A,3549.4991,N,08650.8239,W,0.00,224.45,050608,,,A*75 +$GPVTG,224.45,T,,M,0.00,N,0.0,K,A*08 +$GPGGA,200643.000,3549.4991,N,08650.8239,W,1,07,1.1,269.9,M,-31.4,M,,0000*60 +$GPGLL,3549.4991,N,08650.8239,W,200643.000,A,A*4D +$GPGSA,A,3,32,31,20,14,30,16,22,,,,,,2.1,1.1,1.8*38 +$GPGSV,3,1,12,32,71,259,32,31,67,014,30,16,38,177,13,20,36,307,30*7A +$GPGSV,3,3,12,23,09,299,26,29,06,081,,11,04,263,,05,02,037,*70 +$GPRMC,200643.000,A,3549.4991,N,08650.8239,W,0.00,224.45,050608,,,A*74 +$GPVTG,224.45,T,,M,0.00,N,0.0,K,A*08 +$GPGGA,200644.000,3549.4991,N,08650.8239,W,1,06,1.3,269.9,M,-31.4,M,,0000*64 +$GPGLL,3549.4991,N,08650.8239,W,200644.000,A,A*4A +$GPGSA,A,3,32,31,20,14,30,22,,,,,,,2.2,1.3,1.8*3E +$ADPMB,5,0 +$GPRMC,200644.000,A,3549.4991,N,08650.8239,W,0.00,224.45,050608,,,A*73 +$GPVTG,224.45,T,,M,0.00,N,0.0,K,A*08 diff --git a/gpsbabel/reference/track/amod.gpx b/gpsbabel/reference/track/amod.gpx new file mode 100644 index 000000000..1ed5e9943 --- /dev/null +++ b/gpsbabel/reference/track/amod.gpx @@ -0,0 +1,64 @@ + + + + + + + WPT001 + WPT001 + WPT001 + + + + WPT002 + WPT002 + WPT002 + + + + + + 224.449997 + 0.000000 + + + 269.900000 + + 224.449997 + 0.000000 + 3d + 7 + 1.100000 + 1.800000 + 2.100000 + + + 269.900000 + + 224.449997 + 0.000000 + 3d + 7 + 1.100000 + 1.800000 + 2.100000 + + + 269.900000 + + 224.449997 + 0.000000 + 3d + 6 + 1.300000 + 1.800000 + 2.200000 + + + + diff --git a/gpsbabel/testo b/gpsbabel/testo index 95fa09029..dc4afaf06 100755 --- a/gpsbabel/testo +++ b/gpsbabel/testo @@ -1047,6 +1047,16 @@ compare ${TMPDIR}/nmea.gpx ${REFERENCE}/track/nmea.gpx ${PNAME} -i nmea -f ${REFERENCE}/track/nmea+ms.txt -o gpx -F ${TMPDIR}/nmea+ms.gpx compare ${TMPDIR}/nmea+ms.gpx ${REFERENCE}/track/nmea+ms.gpx +# +# Read an NMEA file with AMOD 3808 waypoints. Be sure we read the points. +# Also write as a "normal" NMEA to be sure AMOD extensions don't leak. +# + +${PNAME} -i nmea -f reference/track/amod-nmea -o gpx -F ${TMPDIR}/amod-out.gpx -o nmea -F ${TMPDIR}/amod-pure +compare ${TMPDIR}/amod-out.gpx reference/track/amod.gpx +compare ${TMPDIR}/amod-pure reference/track/amod-cleansed + + # # Wfff. # -- 2.30.2